package co.edu.uniquindio.gui;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.WindowConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;

import co.edu.uniquindio.logica.Administrador;
import co.edu.uniquindio.logica.Comprador;
import co.edu.uniquindio.logica.Vendedor;
/**
 * esta clase sera la ventana principal de nuestro proyecto 
 * @author Andres Felipe Abril
 * @author Luis Enrique Robledo
 */
public class VentanaPrincipal extends JFrame implements ActionListener,MenuListener
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	public static VentanaPrincipal me;
	private JMenuItem crearAuto;
	private JMenuItem eliminarAuto;
	private JMenuItem mntmAgregar;
	private JMenuItem mntmNewMenuItem;
	private JMenuItem mntmEliminar;
	private JMenuItem mntmAgregarmarca;
	private JMenuItem mntmNewMenuItem_1;
	private JMenuItem mntmElimiarmarca;
	private JMenuItem mntmAgregarmodelo;
	private JMenuItem mntmNewMenuItem_2;
	private JMenuItem mntmEliminarmodelo;
	private JMenuItem mntmAgregarmotor;
	private JMenuItem mntmEditarmotor;
	private JMenuItem mntmEliminarmotor;
	private JMenuItem mntmAgregarpais;
	private JMenuItem mntmEditarPais;
	private JMenuItem mntmEliminarpais;
	private  VentanaAuto ventAuto=VentanaAuto.getVentanaAuto();
	private VentanaUsuarios ventUser=VentanaUsuarios.getVentanaUsuarios();
	private VentanaSubastas ventSubs=VentanaSubastas.getVentanaSubastas();
	private VentanaConsultas ventConsul=VentanaConsultas.getVentanaConsultas();
	private VentanaColor ventColor= VentanaColor.getVentanaColor();
	private VentanaMarca ventMarca= VentanaMarca.getVentanaMarca();
	private VentanaModelo ventModelo= VentanaModelo.getVentanaModelo();
	private VentanaPais ventPais= VentanaPais.getVentanaPais();
	private VentanaAdmin ventAdmin=VentanaAdmin.getVentanaAdmin();
	private VentanaMotor ventMotor=VentanaMotor.getVentanaMotor();
	private Administrador miAdmin;
	private Vendedor miVendedor;
	private Comprador miComprador;
	private ButtonGroup  miGroup;
	private JMenu mnSalir;
	private JRadioButton rdbtnSubastaIngelsa;
	private JRadioButton rdbtnSubastaHolandesa;
	private JRadioButton rdbtnSubastaSilenciosa;
	private JList list;
	private JMenu mnCerrarSesion;
	private JMenu mnIniciarSesion;
	private JMenu mnSubastas;
	private JMenuItem crearSub;
	private JMenuItem editarSub;

	{
		//Set Look & Feel
		try {
			javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * Create the frame.
	 */
	public VentanaPrincipal()
	{
		super();
		initGUI();
	}
	/**
	 * este metodo em permite crear instancia unica de la clase VentanaPrincipal 
	 * @return
	 */
	public static VentanaPrincipal getVentanaPrincipal()
	{
		if (me == null)
			me = new VentanaPrincipal();
		return me;	
	}
	/**
	 * este metodo inicializa los componentes de la clase
	 */
	/**
	 * este metodo inicializa los componentes de la clase
	 */
	public void initGUI()
	{
		setTitle("Autos para Todos Aplicacion de subastas ");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 750, 413);

		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);

		if(miComprador!=null||miVendedor!=null||miAdmin!=null)
		{
			if(miAdmin!=null)
			{
				JMenu mnUsuarios = new JMenu("Administrador");
				menuBar.add(mnUsuarios);

				/*JMenu mnVendedor = new JMenu("Vendedor");
				mnUsuarios.add(mnVendedor);*/

				JMenuItem crearVen = new JMenuItem("Crear");
				mnUsuarios.add(crearVen);

				JMenuItem eliminarVen = new JMenuItem("Eliminar");
				mnUsuarios.add(eliminarVen);

				/*JMenu mnComprador = new JMenu("Comprador");
				mnUsuarios.add(mnComprador);

				JMenuItem crearCom = new JMenuItem("Crear");
				mnComprador.add(crearCom);

				JMenuItem eliminarCom = new JMenuItem("Eliminar");
				mnComprador.add(eliminarCom);*/

				JMenu mnColor = new JMenu("Color");
				menuBar.add(mnColor);

				mntmAgregar = new JMenuItem("agregarColor");
				mnColor.add(mntmAgregar);

				mntmNewMenuItem = new JMenuItem("editarColor");
				mnColor.add(mntmNewMenuItem);

				mntmEliminar = new JMenuItem("eliminarColor");
				mnColor.add(mntmEliminar);

				JMenu mnMarca = new JMenu("Marca");
				menuBar.add(mnMarca);

				mntmAgregarmarca = new JMenuItem("agregarMarca");
				mnMarca.add(mntmAgregarmarca);

				mntmNewMenuItem_1 = new JMenuItem("editarMarca");
				mnMarca.add(mntmNewMenuItem_1);

				mntmElimiarmarca = new JMenuItem("eliminarMarca");
				mnMarca.add(mntmElimiarmarca);

				JMenu mnModelo = new JMenu("Modelo");
				menuBar.add(mnModelo);

				mntmAgregarmodelo = new JMenuItem("agregarModelo");
				mnModelo.add(mntmAgregarmodelo);

				mntmNewMenuItem_2 = new JMenuItem("editarModelo");
				mnModelo.add(mntmNewMenuItem_2);

				mntmEliminarmodelo = new JMenuItem("eliminarModelo");
				mnModelo.add(mntmEliminarmodelo);

				JMenu mnMotor = new JMenu("Motor");
				menuBar.add(mnMotor);

				mntmAgregarmotor = new JMenuItem("agregarMotor");
				mntmAgregarmotor.addActionListener(this);
				mnMotor.add(mntmAgregarmotor);

				mntmEditarmotor = new JMenuItem("editarMotor");
				mntmEditarmotor.addActionListener(this);
				mnMotor.add(mntmEditarmotor);

				mntmEliminarmotor = new JMenuItem("eliminarMotor");
				mntmEliminarmotor.addActionListener(this);
				mnMotor.add(mntmEliminarmotor);

				JMenu mnPais = new JMenu("Pais");
				menuBar.add(mnPais);

				mntmAgregarpais = new JMenuItem("agregarPais");
				mntmAgregarpais.addActionListener(this);
				mnPais.add(mntmAgregarpais);

				mntmEditarPais = new JMenuItem("editarPais");
				mntmEditarPais.addActionListener(this);
				mnPais.add(mntmEditarPais);

				mntmEliminarpais = new JMenuItem("eliminarPais");
				mntmEditarPais.addActionListener(this);
				mnPais.add(mntmEliminarpais);
			}

			if(miVendedor!=null)
			{
				JMenu mnAutomovil = new JMenu("Automovil");
				menuBar.add(mnAutomovil);

				crearAuto = new JMenuItem("Crear");
				mnAutomovil.add(crearAuto);
				crearAuto.addActionListener(this);

				eliminarAuto = new JMenuItem("Eliminar");
				eliminarAuto.addActionListener(this);
				mnAutomovil.add(eliminarAuto);
                
				
				mnSubastas= new JMenu("subastas");
				menuBar.add(mnSubastas);
				
						
				crearSub = new JMenuItem("Crear");
				crearSub.addActionListener(this);
				mnSubastas.add(crearSub);
					
				editarSub = new JMenuItem("Editar");
				editarSub.addActionListener(this);
				mnSubastas.add(editarSub);
				
			}

			JMenu mnBusqueda = new JMenu("Busqueda");
			menuBar.add(mnBusqueda);

			mnCerrarSesion = new JMenu("Cerrar sesion");
			mnCerrarSesion.addMenuListener(this);
			menuBar.add(mnCerrarSesion);
		}
		else
		{
			JMenu mnBusqueda = new JMenu("Busqueda");
			menuBar.add(mnBusqueda);

			mnIniciarSesion = new JMenu("Iniciar sesion");
			mnIniciarSesion.addMenuListener(this);
			menuBar.add(mnIniciarSesion);

			JMenu mnRegistrarse = new JMenu("Registrarse");
			menuBar.add(mnRegistrarse);
		}

		mnSalir = new JMenu("Salir");
		menuBar.add(mnSalir);
		mnSalir.addMenuListener(this);

		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel label = new JLabel("");
		label.setToolTipText("Autos para todos es una aplicacion que subasta automoviles");
		label.setIcon(new ImageIcon(VentanaPrincipal.class.getResource("/co/edu/uniquindio/imagenes/subastas_fingers.jpg")));
		label.setBounds(467, 0, 267, 239);
		contentPane.add(label);

		JLabel lblTiposDeSubastas = new JLabel("Tipos de subastas activas");
		lblTiposDeSubastas.setBounds(10, 11, 296, 14);
		contentPane.add(lblTiposDeSubastas);

		JSeparator separator = new JSeparator();
		separator.setBounds(10, 28, 447, 2);
		contentPane.add(separator);

		miGroup = new ButtonGroup();

		rdbtnSubastaIngelsa = new JRadioButton("Subasta Ingelsa");
		rdbtnSubastaIngelsa.setBounds(6, 37, 140, 23);
		miGroup.add(rdbtnSubastaIngelsa);
		contentPane.add(rdbtnSubastaIngelsa);

		rdbtnSubastaHolandesa = new JRadioButton("Subasta Holandesa");
		rdbtnSubastaHolandesa.setBounds(6, 63, 140, 23);
		miGroup.add(rdbtnSubastaHolandesa);
		contentPane.add(rdbtnSubastaHolandesa);

		rdbtnSubastaSilenciosa = new JRadioButton("Subasta Silenciosa");
		rdbtnSubastaSilenciosa.setBounds(6, 89, 140, 23);
		miGroup.add(rdbtnSubastaSilenciosa);
		contentPane.add(rdbtnSubastaSilenciosa);

		JLabel lblSubastasActivas = new JLabel("Subastas activas ");
		lblSubastasActivas.setBounds(10, 139, 136, 14);
		contentPane.add(lblSubastasActivas);

		JSeparator separator_1 = new JSeparator();
		separator_1.setBounds(10, 157, 447, 2);
		contentPane.add(separator_1);

		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(10, 170, 447, 173);
		contentPane.add(scrollPane);

		list = new JList();
		scrollPane.setViewportView(list);
	}

	public Administrador getMiAdmin() 
	{
		return miAdmin;
	}

	public void setMiAdmin(Administrador miAdmin) 
	{
		this.miAdmin = miAdmin;
		miVendedor=null;
		miComprador=null;
		initGUI();
	}

	public Vendedor getMiVendedor() 
	{
		return miVendedor;
	}

	public void setMiVendedor(Vendedor miVendedor) 
	{
		this.miVendedor = miVendedor;
		miAdmin=null;
		miComprador=null;
		initGUI();
	}

	public Comprador getMiComprador() 
	{
		return miComprador;
	}
	public void cerrarSeccion()
	{
		miAdmin=null;
		miVendedor=null;
		miComprador=null;
		initGUI();
	}
	public void setMiComprador(Comprador miComprador) 
	{
		this.miComprador = miComprador;
		miAdmin=null;
		miVendedor=null;
		initGUI();
	}
	/**
	 * este metodo me permite manejar y/o controlan los eventos que generan los componentes de la clase 
	 */
	@Override
	public void actionPerformed(ActionEvent e) {

		if(e.getSource()==crearAuto)
		{
			ventAuto.setVisible(true);

		}
		
		
		if(e.getSource()==crearSub)
		{
			// en la juega con el metodo que me va a mostrar que tipo de usuario es
			ventSubs.setVisible(true);
		}
		if(e.getSource()==mntmAgregarmarca)
		{
			ventMarca.setVisible(true);
		}
		if(e.getSource()==mntmAgregarmodelo)
		{
			ventModelo.setVisible(true);
		}
		if(e.getSource()==mntmAgregarmotor)
		{
			ventMotor.setVisible(true);
		}
		if(e.getSource()==mntmAgregarpais)
		{
			ventPais.setVisible(true);
		}
	}
	@Override
	public void menuCanceled(MenuEvent arg0) {
		// TODO Auto-generated method stub

	}
	@Override
	public void menuDeselected(MenuEvent arg0) {
		// TODO Auto-generated method stub

	}
	@Override
	public void menuSelected(MenuEvent arg0) {
		// TODO Auto-generated method stub
		if(mnSalir.isSelected())
		{
			System.exit(0);
		}
		if(mnCerrarSesion.isSelected())
		{
			System.out.println("entro");
            cerrarSeccion();
		}
        if(mnIniciarSesion.isSelected())
        {
        	ventAdmin.setVisible(true);
        	this.setVisible(false);
        }
	}
}
